home *** CD-ROM | disk | FTP | other *** search
- /*
- computes a^b.
- uses log and exp
- */
-
- #include <errno.h>
- int errno;
- double log(), exp();
-
- double
- pow(arg1,arg2)
- double arg1, arg2;
- {
- double temp;
- long l;
-
- if(arg1 <= 0.) {
- if(arg1 == 0.) {
- if(arg2 <= 0.)
- goto domain;
- return(0.);
- }
- l = arg2;
- if(l != arg2)
- goto domain;
- temp = exp(arg2 * log(-arg1));
- if(l & 1)
- temp = -temp;
- return(temp);
- }
- return(exp(arg2 * log(arg1)));
-
- domain:
- errno = EDOM;
- return(0.);
- }